1. Field of the Invention
The present invention generally relates to virtual machines. In particular, the present invention is related to techniques for providing a user interface for interacting with an operating system executing in a virtual machine.
2. Background
An operating system traditionally consumes substantially all of the resources of a physical computer on which it executes. However, a software-implemented virtual machine may be also executed on the physical computer to enable a user of the physical computer to execute a second operating system in the context of the virtual machine. The first operating system, which operates independently from the virtual machine, provides a user interface that enables the user to interact with the second operating system. The virtual machine buffers pixels generated by the second operating system and transfers the pixels to the interface for display as video output to the user.
User interfaces for interacting with a virtual machine traditionally provide hardware-based operational capabilities for interfacing to the second operating system, but not software-based operational capabilities (referred to herein as “enhanced features”) that might be enabled by modern operating systems. Example hardware-based operational capabilities include enabling the user to view video output of the virtual machine, enabling the user to provide mouse or keyboard input to the virtual machine, enabling the user to play audio output of the virtual machine, etc. Example software-based operational capabilities include sharing clipboard data among the first and second operating systems, providing user verification support to the second operating system, redirecting a drive volume or smart card functionality of the physical computer to the virtual machine, etc.